Amazon Managed GrafanaにOktaを使ったSAML認証でログインしてみた
Amazon Managed GrafanaにOktaを使ったSAML認証でログインしたい
こんにちは、のんピ(@non____97)です。
皆さんはAmazon Managed Grafana(以降AMG)にOktaを使ったSAML認証でログインしたいなと思ったことはありますか? 私はあります。
AMGのワークスペース内にアクセスするために以下のいずれかが必要です。
- IAM Identity Centerによる認証
- SAML認証
サクッと検証したいのみであれば、AWSのみで完結するIAM Identity Centerでやりたいところでしょう。しかし、2024/2/28時点でAWS Organizationsが使用できない環境においては、AMGはIAM Identity Centerの認証に使用できません。
そのため、必然的にSAML認証を行う必要があります。
SAML認証のための仕組みを0から作るのは中々手間です。SaaSを使いたいところです。
OktaのDeveloper Editionでは何と期間無制限で無料で使用することが可能です。クレジットカードの登録も不要です。
6.1 Developer Edition Service Provided Free of Charge. The Developer Edition Service is provided free of charge to Customer up to certain limits specified by Okta at developer.okta.com/pricing (for example and without limitation, total number of User logins and features offered). Any usage of the Developer Edition Service in excess of the limits specified by Okta (as measured by Okta based upon the Developer Edition Service log files) is subject to fees as set forth at developer.okta.com/pricing and Section 6.2 below. Okta reserves the right to change its pricing policies for the Developer Edition Service at any time in its sole discretion, including by discontinuing the availability of the Developer Edition Service. Okta will provide Customer with reasonable notice of any such changes.
ログイン数などのレートリミットは存在するので気をつける必要がありますが、非常にありがたいですね。
加えて、AMGのドキュメントにはOktaを使ったSAML認証の方法まで紹介されています。
これはやるしかないですね。
やってみた
AMGワークスペースの作成
AMGワークスペースの作成から行います。
ワークスペース名とGrafanaのバージョンを選択します。
認証方法はSAMLを指定します。また、GrafanaのCloudWatchプラグインなどを使いたかったので、プラグイン管理を有効にしておきます。
AMGワークスペースにアタッチするIAMロールに追加する権限を指定します。CloudWatchメトリクスを表示させたかったので、CloudWatchを選択しました。
設定内容を確認して、ワークスペースを作成します。
数分でワークスペースの作成は完了します。後続のSAMLの設定をするためにセットアップを完了する
をクリックします。
この状態で待機します。
Oktaの設定
次にOktaの設定です。
既にOkta organizationは作成済みの状態から開始します。Okta Developer Editionの登録がまだの方は以下記事が参考になります。
https://login.okta.com/からOktaのOrganization URLを指定します。
Oktaにサインインします。
Applications
-Applications
のCreate App Integration
をクリックします。
AMGを検索して選択します。
Add Integration
をクリックします。
適当にアプリケーションのラベルを指定してDone
をクリックします。
AMGのApp Integrationが作成できました。
Sign On
タブからEdit
をクリックします。
AMGワークスペースのワークスペースID(g-xxxxxxxxxxx
)とリージョンを入力してSave
をクリックします。
Okta側で設定できました。AMG側でSAMLの設定をする際に必要になるMetadata URL
を控えておきます。
AMGワークスペース側でのSAMLの設定
AMGワークスペース側でのSAMLの設定です。
先ほど控えたMetadata URLを入力します。また、アサーション属性ロールや管理者ロールの値なども入力します。管理者ロールの値はOktaに登録されている管理者としたいユーザーのメールアドレスです。
デフォルトでもOkta上のdisplayName
がname
として認識され、mail
はemail
やlogin
にマッピングされます。
(Optional) If you changed the default attributes in your Okta application, expand Additional settings - optional and then set the new attribute names.
By default, the Okta displayName attribute will be passed to the name attribute and the Okta mail attribute will be passed to both the email and login attributes.
Oktaのユーザーの属性はPeople
から確認可能です。
SAMLの設定が完了すると、以下のような画面になります。
AMGワークスペースへのログイン
AMGワークスペースへのログインを試してみます。
GrafanaワークスペースURLに記載のリンクをクリックします。
すると、Welcome to Amazon Managed Grafana
と表示されました。Sign in with SAML
をクリックします。
すると、ユーザーにはこのアプリケーションが割り当てられていません
と表示されしまいました。
これは対象のユーザーをOkta上のAMGのApp Integrationにアサインしていないためです。
AMGのApp IntegrationのAssignments
タブからAssign
-Assign to Peopple
をクリックします。
アサインしたいユーザーを選択してAssign
をクリックします。
アサインするユーザーをチェックしてSave and Go Back
をクリックします。
Assigned
となったことを確認して、Done
をクリックします。
アサインされましたね。
アサインしたユーザーのマイアプリを確認すると、AMGが追加されていました。
再度ログインを試すと、以下のようにログインできました。メニューにAdministration
という項目があるので、管理者権限でログインしていることが分かります。
ユーザー一覧を確認すると、SAMLで認証した管理者であることが分かります。
参考までにプロファイルは以下のとおりです。
管理者のアサーション属性ロールの変更
悲管理者の場合はどのように見えるでしょうか。
管理者のアサーション属性ロールを変更して確認します。
試しにmail
からtest
に変更します。
この状態でAMGワークスペースからサインアウトし、再度AMGワークスペースにログインすると、以下のようにメニューからAdministration
やApss
などが削除されています。アサーション属性で指定した値に基づいて管理者を判断していることが分かります。
Okta上でdisplayNameの設定した場合の挙動
OktaのユーザーでdisplayName
を設定した場合の挙動を確認します。
のんピ
と設定してみました。
AMGワークスペースからサインアウトし、再度AMGワークスペースにログインすると、Name
がのんピ
に変わっていました。
CloudWatchメトリクスのダッシュボードの作成
CloudWatchメトリクスのダッシュボードを作成してみます。
詳細な手順はGrafana Labsのドキュメントにも記載されています。
AWS Data Sources
からCloudWatch
をクリックします。
CloudWatchメトリクスを取得したいリージョンを選択してAdd data source
をクリックします。
データソースが追加されたことを確認します。
データソース横のGo to settings
をクリックすると、データソースの設定画面が表示されます。AMGワークスペースに割り当てているロールではなく、アクセスキーを使用したい場合はこちらで設定します。
Dashboards
タブからAmazon EC2
のImport
をクリックします。
数秒でインポートが完了します。
Amazon EC2
をクリックすると、ダッシュボードが表示されます。
問題なくメトリクスを表示できていますね。
EC2インスタンス以外のメトリクスも表示可能です。UsageのResourceCountを表示してみました。
注意点としては、GetMetricDataを叩くと、その分課金が発生します。大量のメトリクスを表示したり表示範囲を変更する際は注意しましょう。詳細は以下記事をご覧ください。
試しにGetMetricData APIのCallCountをGrafana上で表示してみました。思ったよりは呼び出していませんでした。
検証でとりあえずAmazon Managed Grafanaを使いたい時に
Amazon Managed GrafanaにOktaを使ったSAML認証でログインしてみました。
検証でとりあえずAmazon Managed Grafanaを使いたい時に役立ちそうですね。
Entra ID(旧Azure AD)やAuth0をSAML認証のIdPとしてしている記事もあります。併せてご覧ください。
検証の度にもAMGワークスペースを作成、削除をする場合はAWS CDKを使ってデプロイすると良いでしょう。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!